package com.yueya.config;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.render.ViewType;
import com.jfinal.template.Engine;

/**
 * API引导式配置
 */
public class SysConfig extends JFinalConfig {

	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		PropKit.use("config.properties"); // 加载少量必要配置，随后可用PropKit.get(...)获取值
		me.setDevMode(PropKit.getBoolean("devMode", false));
		me.setViewType(ViewType.JSP); // 设置视图类型为Jsp，否则默认为FreeMarker
		me.setUrlParaSeparator(",");
		me.setMaxPostSize(309715200);// 设置300M
		me.setBaseUploadPath(PropKit.get("base.upload.path"));
	}

	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
		me.add(new Route());
	}

	/**
	 * 配置插件
	 */
	public void configPlugin(Plugins me) {
		// 配置druid数据库连接池插件
		DruidPlugin druidPlugin = new DruidPlugin(PropKit.use("rds.properties").get("rds.jdbcUrl"),
				PropKit.use("rds.properties").get("rds.user"),
				PropKit.use("rds.properties").get("rds.password").trim());
		me.add(druidPlugin);

		// 配置ActiveRecord插件
		ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
		arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
		arp.setDialect(new MysqlDialect());
		me.add(arp);

		// 映射DB表到 Model模型
		ORMapping.config(arp);

	}

	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {
		//me.add(new CommonInterceptor());
	}

	/**
	 * 配置处理器
	 */
	public void configHandler(Handlers me) {

	}

	/**
	 * 建议使用 JFinal 手册推荐的方式启动项目 运行此 main 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
	 */
	public static void main(String[] args) {
		JFinal.start("WebRoot", 80, "/", 5);
	}

	@Override
	public void configEngine(Engine me) {
		// TODO Auto-generated method stub
		
	}
}
